/**
 * response 统一处理
 * 前后端约定的前后交互模式为
 * {
 *  code: 200,
 *  data: {},
 *  message: '错误信息'
 * }
 * @param {*} response
 * @returns
 */
function isSuccessResponse(response) {
  const { data = {}, config } = response;
  // JSON 请求并且 data.code 不为 200 认为是失败，其余皆为成功
  if ((config.responseType ? config.responseType.indexOf('json') > -1 : true) && data.code !== 200) {
    // 接口直接返回的二进制流的也不报错
    // if (config.url.indexOf('/output/api/info/') !== -1) {
    //   return true;
    // }
    return false;
  }

  return true;
}

export default instance => {
  // Add a response interceptor
  instance.interceptors.response.use(
    response => {
      if (!isSuccessResponse(response)) {
        return Promise.reject({
          response,
          config: response.config,
        });
      }

      return response;
    },
    error => Promise.reject(error)
  );
};
